package com.njzxw.fs.commonutil.bean;

import com.njzxw.fs.commonutil.annotation.ValidInsert;
import com.njzxw.fs.commonutil.bean.BaseBean;
import com.njzxw.fs.commonutil.util.DateUtil;
import lombok.AccessLevel;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import net.sf.json.JSONObject;

import javax.validation.constraints.NotNull;
import java.util.HashMap;
import java.util.Map;

@ToString(callSuper = true)
@Getter
public class MsmBean extends BaseBean {

    @ValidInsert
    @Setter
    private String mobile;

    /**
     * 必填:短信签名-可在短信控制台中找到
     */
    @ValidInsert
    @Setter
    @NotNull(message = "短信签名必填")
    private String sign_name;

    /**
     * 必填:短信模板-可在短信控制台中找到
     */
    @ValidInsert
    @Setter
    private String template_code;

    /**
     * 模板中的变量替换JSON串,如模板内容为"亲爱的${name},您的验证码为${code}"时,此处的值为 "{\"name\":\"Tom\", \"code\":\"123\"}"
     */
    @Setter
    private Map<String,String> templateParamMap;

    /**
     * 模板中的变量替换JSON串,如模板内容为"亲爱的${name},您的验证码为${code}"时,此处的值为 "{\"name\":\"Tom\", \"code\":\"123\"}"
     */
    @ValidInsert
    @Setter
    private String template_param;

    /**
     * 上行短信扩展码(无特殊需求用户请忽略此字段)
     */
    @ValidInsert
    @Setter
    private String extend_code;

    /**
     * outId为提供给业务方扩展字段,最终在短信回执消息中将此值带回给调用者
     */
    @ValidInsert
    @Setter
    private String out_id;

    /**
     * 存在值 发送成功 否则发送失败
     */
    @Setter
    private String id;

    /**
     * 存在值 发送成功 否则发送失败
     */
    @ValidInsert
    @Setter
    private String code;

    /**
     * 存在值 发送成功 否则发送失败
     */
    @ValidInsert
    @Setter
    private String message;

    /**
     * 存在值 发送成功 否则发送失败
     */
    @ValidInsert
    @Setter
    private String request_id;

    /**
     * 存在值 发送成功 否则发送失败
     */
    @ValidInsert
    @Setter
    private String biz_id;

    /**
     * 发送状态1成功0失败
     */
    @ValidInsert
    @Setter
    @Getter
    private int state;

    @ValidInsert
    public String oper_date = DateUtil.getToday("yyyy-MM-dd HH:mm:ss");

    /**
     * 短信发送人类型：1 后台人员 2前端用户
     */
    @ValidInsert
    @Setter
    @Getter
    public int type;

    /**
     * 设置模板对应key
     * @param code
     * @param value
     */
    public void setTemplateParam(String code,String value){
        if(templateParamMap == null){
            templateParamMap = new HashMap<>();
        }
        templateParamMap.put(code,value);

        setTemplate_param(JSONObject.fromObject(templateParamMap).toString());
    }

}
